﻿using System;
using System.ServiceModel;
using eCashDataLayer;
using System.Collections.Generic;

namespace eCashDatalayer
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IeCashDatalayer
    {
        #region Permission Module
        [OperationContract]
        void RegisterUser(RegistrationModel RegistrationModel);

        [OperationContract]
        void RegisterUserTuckShop(TuckShopRegistrationModel TuckshopRegistrationModel);

        [OperationContract]
        int ConfirmRegistration(string sGUID);

        [OperationContract]
        int CheckUserExistance(String sUSERNAME);

        [OperationContract]
        RegistrationModel RecoverCredentials(RegistrationModel RegistrationModel);

        [OperationContract]
        UserModel AuthonticateUser(String sUsername, String sPassword);
         
        [OperationContract]
        int CheckEmailExistance(String sEMAIL);

        [OperationContract]
        void ChangePassword(int UserID, String sPassword);

        [OperationContract]
        int ChangeEmail(int UserID, String sEmail);
        #endregion 

        #region Schools

        [OperationContract]
        IList<SchoolModel> GetSchools();

        [OperationContract]
        IList<SchoolModel> GetSchoolsByParent(int UserID);

        [OperationContract]
        IList<SchoolModel> GetSchoolsDataExtedend(int Userid);


        #endregion

        #region Allergy 
         [OperationContract]
        IList<AllergyModel> GetAllergies();
        #endregion

        #region Parent Details 
        [OperationContract] 
        ParentModel GetParent(int Userid);
        [OperationContract]
        void UpdateParentDetails(ParentModel ParentModel);
        #endregion

        #region Kids  
        [OperationContract]
        KidsModelExtended GetKids(int Userid);

        [OperationContract]
        int LinkKid(KidsModelExtended Model);

        [OperationContract]
        IList<KidsModelExtended> GetKidsList(int Userid);

        [OperationContract]
        IList<KidsModelExtended> GetKidsbyParent(int Userid);

        [OperationContract]
        int UpdateKidsdetails(KidsModelExtended Model);
        #endregion

        #region Tuck-Shop 
         [OperationContract]
        void UpdateTuckshopDetails(TuckShopModel TuckShopModel);


         [OperationContract]
         TuckShopModel GetTuckShopDetails(int Userid);
        #endregion

        #region Contacts
         [OperationContract]
         IList<ContactsModel> GetContactswork(int Userid);

         [OperationContract]
         IList<ContactsModel> GetContactHome(int Userid);

         [OperationContract]
         IList<ContactsModel> GetContactCellphone(int Userid);
         
         [OperationContract]
         IList<ContactsModel> GetContactEmergency(int Userid);

         [OperationContract]
         int AddContactNumber(ContactsModel Model);

         [OperationContract]
         void DeleteContactnumber(int ContactNumberID);

         [OperationContract]
         int UpdateContactNumber(ContactsModel Model);
        #endregion 

        #region General
         [OperationContract]
         IList<CountryModel> GetCountries();
        
        #endregion

        //HE Registry

        #region Ministries
          [OperationContract]
         IList<MinistryModel> GetMinistries();

         #endregion

        #region Acts And Bills
          [OperationContract]
         String AddActsBills(ActsAndBillsModel Actsandbills);

          [OperationContract]
         String UpdatedActsBills(ActsAndBillsModel Actsandbills);
          [OperationContract]
          IList<ActsAndBillsModel> GetActsbills(ActsAndBillsModel Actsandbills);
          
           [OperationContract]
           String DeleteActsBills(int iActsAndBillID); 
         #endregion 

        #region Bringupfiles
        [OperationContract]
        IList<BringupFilesModel> GetBringupFiles();

        [OperationContract]
        String UpdateBringupFiles(BringupFilesModel Model);

        [OperationContract]
        String AddBringupFiles(BringupFilesModel model);

        [OperationContract]
        IList<BringupFilesModel> GetFilterBringupFiles(String sReference);

        [OperationContract]
        String DeleteBringupFiles(int iFilesID);

        #endregion

        #region Cabinet Authorities
        [OperationContract]
        String AddCabinetAuthority(CabinetAuthoritiesModel Model);

        [OperationContract]
        String DeleteIncommingCabinetAuthorities(int iIncomingCabinetID);

        [OperationContract]
        IList<CabinetAuthoritiesModel> GetCabinetAuthoritiesBill(String sTITLE, String sREFERENCENUMBER);
        [OperationContract]
        String UpdateCabinetAuthority(CabinetAuthoritiesModel model);
        #endregion

        #region Dispatch Cabinet Authoroties
         [OperationContract]
         String AddDispatchcabinetauthority(DispatchCabinetAuthorityModel Model);
         [OperationContract]
         IList<DispatchCabinetAuthorityModel> GetDispatchcabinetauthority(String sREFERENCENUMBER, String sYear);
         [OperationContract]
         String DeleteDispatchCabinetAuthorities(int CabinetauthorityID);
         [OperationContract]
         String UpdateDispatchcabinetauthority(DispatchCabinetAuthorityModel Model);

        #endregion

        #region Classifier
            [OperationContract]
            String AddClassifier(ClassifierModel Model);
            [OperationContract]
            String UpdateClassifier(ClassifierModel Model);
            [OperationContract]
            String DeleteClassifier(ClassifierModel Model);
           #endregion

        #region OutGoging Mail 
        [OperationContract]
        String AddOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        String UpdateOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        String DeleteOutgoingMail(OutGoingmailModel Model);
        [OperationContract]
        IList<DeliveryModel> GetDeliverytype();
        [OperationContract]
        IList<SignatoriesModel> GetSignatories();
        [OperationContract]
        IList<SectionDepartmentModel> GetSectionDepartment();

        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbyReferencenumber(OutGoingmailModel model);
        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbySubject(OutGoingmailModel model);
        [OperationContract]
        IList<OutGoingmailModel> GetOutgoingmailbyDate(OutGoingmailModel model);
        #endregion

        #region Incomming Mail
         [OperationContract]
         IList<IncommingmailModel> GetIncommingMailbyDateofSubject(IncommingmailModel model);
         [OperationContract] 
         IList<IncommingmailModel> GetIncommingMailbyDateofReferencenumber(IncommingmailModel model);
         [OperationContract]
         IList<IncommingmailModel> GetIncommingMailbyDateofPrivateindivisual(IncommingmailModel model);
         [OperationContract]
         IList<IncommingmailModel> GetIncommingMailbyDateofReceipt(IncommingmailModel model);
         [OperationContract]
         IList<IncommingmailModel> GetIncommingMailbyMinistryname(IncommingmailModel model);

         //Crud
        [OperationContract]
         String DeleteIncommingMail(IncommingmailModel Model);
        [OperationContract]
        String AddIncommingMail(IncommingmailModel Model);
        [OperationContract]
         String UpdateIncommingMail(IncommingmailModel Model);

        //Helper Search
        [OperationContract]
        IList<RecepientReceiverModel> GetRecepientReceiver();
        #endregion 

        #region Markout
         [OperationContract]
         String DELETEMarkoutcard(MarkoutModel Model);
         [OperationContract]
         String UpdateMarkoutcard(MarkoutModel Model);
         [OperationContract]
         String AddMarkoutcard(MarkoutModel Model);

         //Search
         [OperationContract]
         IList<MarkoutModel> GetmarkoutbyTakenby(MarkoutModel model);
         [OperationContract]
         IList<MarkoutModel> GetmarkoutbyDateTaken(MarkoutModel model);
         [OperationContract]
         IList<MarkoutModel> GetmarkoutbyFilenumber(MarkoutModel model);
         #endregion

        #region Policy File 
        [OperationContract]
         String DeletePolicyFile(PolicyFileModel Model);
        [OperationContract]
         IList<PolicyFileModel> GetPolicybyReference(PolicyFileModel model);
        [OperationContract]
         IList<PolicyFileModel> GetPolicybyTitle(PolicyFileModel model);
        [OperationContract]
         String UpdatePolicyFile(PolicyFileModel Model);
        [OperationContract]
         String AddPolicyFile(PolicyFileModel Model);

        #endregion 

        #region Memo
        [OperationContract]
        IList<MemoModel> GetMemobySubject(MemoModel model);
        [OperationContract]
        IList<MemoModel> GetMemobyReferencenumber(MemoModel model);
        [OperationContract]
        IList<MemoModel> GetMemobySectionDepartment(MemoModel model);
        [OperationContract]
        String DeleteMemo(MemoModel Model);
        [OperationContract]
        String UpdateMemo(MemoModel Model);
        [OperationContract]
        String AddMemo(MemoModel Model);
        #endregion

        #region stations
        [OperationContract]
        IList<StationsModel> GetStation();
        #endregion

        #region Post
        [OperationContract]
         IList<PostModel> GetPostList();
        [OperationContract]
        IList<PostModel> GetJobtitlecurrent();
         #endregion 

        #region Title Status Model 
        [OperationContract]
        IList<TitleStatusModel> GetJobtitlestatus();
        #endregion

        #region File
        [OperationContract]
        String UpdateFile(FileModel Model);
        [OperationContract]
        String DeleteFile(FileModel Model);
        [OperationContract]
        String AddFile(FileModel Model);

        //search
        [OperationContract]
         IList<FileModel> GetFilebyEcnumber(FileModel model);
        [OperationContract]
         IList<FileModel> GetFilebyTITLE(FileModel model);
        [OperationContract]
         IList<FileModel> GetFilebyReferencenumber(FileModel model);

        //Static Display Data 

        #endregion

        #region Fileindex
        [OperationContract]
        IList<FileindexModel> GetFileindexbyReferencenumber(FileindexModel model);
        [OperationContract]
        IList<FileindexModel> GetFileindexbyTitle(FileindexModel model);
        [OperationContract]
         String DeleteFileindex(FileindexModel Model);
        [OperationContract]
         String UpdateFileindex(FileindexModel Model);
        [OperationContract]
         String AddFileindex(FileindexModel Model);
        #endregion

        #region Defence official
        [OperationContract]
        IList<DefenceMinutesModel> GetPurposeofApproval();
        [OperationContract]
        IList<DefenceMinutesModel> GetDefenceminutesnumber();
        [OperationContract]
        string DeleteDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string UpateDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceMinutes(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string UpdateDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string DeleteDefenceofficials(DefenceMinutesModel Model);
        [OperationContract]
        string AddDefenceDispatch(DispatchMunutesModel Model);
        [OperationContract]
         string UpdateDefenceDispatch(DispatchMunutesModel Model);
        [OperationContract]
        string DeleteDefenceDispatch(DispatchMunutesModel Model);

        [OperationContract]
        IList<DispatchMunutesModel> GetDefenceMinutesDispatch(DispatchMunutesModel model);

        [OperationContract]
        IList<DefenceMinutesModel> GetminutesOfficialsname(DefenceMinutesModel model);
        #endregion
    }
      
}
